#include <iostream>
#include <string>
using namespace std;
int main()
{
int c1,c2,c3,c4,c5,c6,c7,c8;
string s1;
string s;
cin>>s;
for(char c:s){
    if(c=='(') c1++;
    if(c==')') c2++;
    if(c=='{') c3++;
    if(c=='}') c4++;
    if(c=='[') c5++;
    if(c==']') c6++;
    if(c=='<') c7++;
    if(c=='>') c8++;
}
if(c1==c2 and c3==c4 and c5==c6 and c7==c8){
    for(char x : s){
        if(x=='('){
            s1+=x;
        }
        if (x==')'){
            if(s1.length()>0){
                if (s1[s1.length() - 1]=='('){
                    s1.pop_back();
                }
            }        
        }
    
    
        if(x=='['){
            s1+=x;
        }
        if (x==']'){
            if(s1.length()>0){
                if (s1[s1.length() - 1]=='['){
                    s1.pop_back();
                }
            }        
        }
    
    
        if(x=='<'){
            s1+=x;
        }
        if (x=='>'){
            if(s1.length()>0){
                if (s1[s1.length() - 1]=='<'){
                    s1.pop_back();
                }
            }        
        }
    
    
        if(x=='{'){
            s1+=x;
        }
        if (x=='}'){
            if(s1.length()>0){
                if (s1[s1.length() - 1]=='{'){
                    s1.pop_back();
                }
            }        
        }
    }
    if (s1.length()==0){
    cout<<"True";
    }
    if (s1.length()!=0){
    cout<<"False";
    }
}
else{
cout<<"False";
}
return 0;
}
